package com.baizhi.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

//MyBatis框架的工具类   主要是获取SqlSession对象  和释放SqlSession对象资源两个方法
//事先要有个jdbc.properties 文件   引入到mybatis-config.xml中
public class MyBatisUtils {
//	1定义一个私有静态属性SqlSessionFactory
	private static SqlSessionFactory factory = null;
//	2静态代码块中加载配置文件 创建工厂对象
	static {
		//利用Resources  加载配置文件
		try {
			InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
			//创建factory对象
			factory = new SqlSessionFactoryBuilder().build(is);
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}
//	3象获取sqlSession对象
	public static SqlSession openSession() {
		//利用SqlSessionFactory对象获取sqlSession对象
		SqlSession sqlSession = factory.openSession();
		return sqlSession;
	}
//	4、释放资源
	public static void close(SqlSession sqlSession) {
		sqlSession.close();
	}

	public static void main(String[] args) {
		System.out.println(openSession());
	}
}
